///////////////////////////////////////////////////////////////////
//
//   Info Message 2 (v0.3)
//   diamond-optic
//   03.23.08
//
// Changes:
//	- Updated to AMXX SVN versions
//	- Y position moved closer to the top of screen
//	- FX added & other variables adjusted
//
///////////////////////////////////////////////////////////////////

#include <amxmodx>
#include <amxmisc>

#define VERSION "0.3"
#define SVERSION "v0.3 - by diamond-optic (www.AvaMods.com)"

#define X_POS         -1.0
#define Y_POS         0.11
#define HOLD_TIME     10.0

new Array:g_Values
new Array:g_Messages
new g_MessagesNum
new g_Current

#define charsof(%1) (sizeof(%1)-1)

new amx_freq_imessage;

public plugin_init()
{
	register_plugin("Info Messages 2",VERSION,"diamond-optic")
	register_cvar("imessage2_stats",SVERSION,FCVAR_SERVER|FCVAR_SPONLY)
	
	register_dictionary("imessage.txt")
	register_dictionary("common.txt")
	register_srvcmd("amx_imessage","setMessage")
	amx_freq_imessage=register_cvar("amx_freq_imessage","10")
	
	new lastinfo[8]
	get_localinfo("lastinfomsg",lastinfo, 7)
	g_Current = str_to_num(lastinfo)
	
	set_localinfo("lastinfomsg","")
	
	g_Messages=ArrayCreate(384)
	g_Values=ArrayCreate(3)
}

public infoMessage()
{
	if (g_Current >= g_MessagesNum)
		g_Current = 0
		
	// No messages, just get out of here
	if(!g_MessagesNum)
		return;
	
	new values[3];
	new Message[384];
	
	ArrayGetString(g_Messages,g_Current,Message,charsof(Message));
	ArrayGetArray(g_Values,g_Current,values);
	
	new hostname[64];
	get_cvar_string("hostname",hostname,63);
	replace(Message,380,"%hostname%",hostname);
	
	set_hudmessage(values[0],values[1],values[2],X_POS,Y_POS,0,0.5,HOLD_TIME,0.15,7.0,-1);
	
	show_hudmessage(0,"%s",Message);
	
	client_print(0,print_console,"%s",Message);
	++g_Current;
	
	new Float:freq_im = get_pcvar_float(amx_freq_imessage);
	
	if(freq_im > 0.0)
		set_task(freq_im,"infoMessage",12345);
}

public setMessage()
{
	new Message[384];
	
	remove_task(12345)
	read_argv(1,Message,380)
	
	while(replace(Message,380,"\n","^n")) {}
	
	new mycol[12],vals[3];
	
	read_argv(2,mycol,11)		// RRRGGGBBB
	vals[2] = str_to_num(mycol[6])
	
	mycol[6] = 0
	vals[1] = str_to_num(mycol[3])
	
	mycol[3] = 0
	vals[0] = str_to_num(mycol[0])
	
	g_MessagesNum++
	
	new Float:freq_im = get_pcvar_float(amx_freq_imessage)
	
	ArrayPushString(g_Messages,Message);
	ArrayPushArray(g_Values,vals);
	
	if (freq_im > 0.0)
		set_task(freq_im,"infoMessage",12345)
	
	return PLUGIN_HANDLED
}

public plugin_end()
{
	new lastinfo[8]

	num_to_str(g_Current,lastinfo,7)
	set_localinfo("lastinfomsg",lastinfo)
}